<?php
 
class Estado_model extends CI_Model {
      function __construct(){
        parent::__construct();
    }
 
    public function estadoHumedad(){
        //obtenemos el ultimo dato de humedad y en funcion de este activamos reles

	$query = $this->couchdb->limit(1)->descending(TRUE)->getView('arduino','tipovalorfecha'); //base de datos, nombre view
	
	$ulthum = $query->rows[0]->value[1];//ultimos datos almacenados en la base de datos.
	$query1 = $this->couchdb->limit(1)->descending(TRUE)->getview('humedad','humseleccionada'); //vista humedad
	$valhum = $query1->rows[0]->value[0];//ultima humedad seleccionada.
	$error = $query1->rows[0]->value[1];//ultima error seleccionado.
  	$datos['valhum'] = $valhum;
        $datos['errorh'] = $error;
	$datos['estadoh'] = "Humedad dentro del rango permitido.";
	if(($ulthum)>($valhum+$error)){
		$datos['estadoh'] = "<font color=\"red\">¡Humedad actual por encima del rango tolerado!</font>";
		$doc = new stdClass();
                $doc->alarma = 'Humedad demasiado alta';
                $doc->tipo = 'Humedad';
                $doc->date = time();
                $doc->valor = $ulthum;
                $doc->valorusuario = $valhum;
                $doc->porcerror = $error;
                $this->couchdb->storeDoc($doc);
	}
	if(($ulthum)<($valhum-$error)){
                $datos['estadoh'] = "<font color=\"red\">¡Humedad actual por debajo del rango tolerado!</font>";
		$doc = new stdClass();
                $doc->alarma = 'Humedad demasiado baja';
                $doc->tipo = 'Humedad';
                $doc->date = time();
                $doc->valor = $ulthum;
                $doc->valorusuario = $valhum;
                $doc->porcerror = $error;
                $this->couchdb->storeDoc($doc);
	}
	return $datos;
    }
    public function estadoTemperatura(){
        //obtenemos el ultimo dato de temperatura y en funcion de este activamos reles

	$query = $this->couchdb->limit(2)->descending(TRUE)->getView('arduino','tipovalorfecha'); //base de datos, nombre view
	
	$ulttemp = $query->rows[1]->value[1];//ultimos datos almacenados en la base de datos.
	$query1 = $this->couchdb->limit(1)->descending(TRUE)->getview('temperatura','tempseleccionada'); //vista humedad
	$valtemp = $query1->rows[0]->value[0];//ultima temperatura seleccionada por el usuario.
	$error = $query1->rows[0]->value[1];//ultima error seleccionado.
  	$datos['valtemp'] = $valtemp;
        $datos['errort'] = $error;
	$datos['estadot'] = "Temperatura dentro del rango permitido.";
	if(($ulttemp)>($valtemp+$error)){
		$datos['estadot'] = "<font color=\"red\">¡Temperatura actual por encima del rango tolerado!</font>";
		$doc = new stdClass();
                $doc->alarma = 'Temperatura demasiado alta';
                $doc->tipo = 'Temperatura';
                $doc->date = time();
                $doc->valor = $ulttemp;
                $doc->valorusuario = $valtemp;
                $doc->porcerror = $error;
                $this->couchdb->storeDoc($doc);
	}
	if(($ulttemp)<($valtemp-$error)){
                $datos['estadot'] = "<font color=\"red\">¡Temperatura actual por debajo del rango tolerado!</font>";
		$doc = new stdClass();
                $doc->alarma = 'Temperatura demasiado baja';
                $doc->tipo = 'Temperatura';
                $doc->date = time();
                $doc->valor = $ulttemp;
                $doc->valorusuario = $valtemp;
                $doc->porcerror = $error;
                $this->couchdb->storeDoc($doc);
	}
	return $datos;
    }
    public function estableceHumedad($valor,$error){
        $doc = new stdClass();
        $doc->humseleccionada = $valor;
        $doc->date = time();
        $doc->error = $error;
        $this->couchdb->storeDoc($doc);
        $datos['estado']="Humedad a $valor%+-$error establecida con exito.";
        return $datos;
    }
    
    public function estableceTemperatura($valor,$error){
        $doc = new stdClass();
        $doc->tempseleccionada = $valor;
        $doc->date = time();
        $doc->error = $error;
        $this->couchdb->storeDoc($doc);
        $datos['estado']="Temperatura a $valor.º+-$error establecida con exito.";
        return $datos;
    }
    
    public function enciendeRiego($estado){
        //ultimo usuario que ha accedido al sistema.
        $query = $this->couchdb->limit(1)->descending(true)->getview('identificacion','ultimoacceso'); //vista ultimo acceso
	$usuario = $query->rows[0]->value;//ultimo acceso
        //almacenamos el estado del riego con el usuario que lo ha establecido.
        $doc = new stdClass();
        $doc->estado = $estado;
        $doc->date = time();
        $doc->usuario = $usuario;
        $doc->actuador= 'riego';
        $this->couchdb->storeDoc($doc);
        $datos['estado']="Actuador de riego $estado de forma manual por $usuario.";
        return $datos;
    }
    public function enciendeCalefaccion($estado){
        //ultimo usuario que ha accedido al sistema.
        $query = $this->couchdb->limit(1)->descending(true)->getview('identificacion','ultimoacceso'); //vista ultimo acceso
	$usuario = $query->rows[0]->value;//ultimo acceso
        //almacenamos el estado del riego con el usuario que lo ha establecido.
        $doc = new stdClass();
        $doc->estado = $estado;
        $doc->date = time();
        $doc->usuario = $usuario;
        $doc->actuador= 'calefaccion';
        $this->couchdb->storeDoc($doc);
        $datos['estado']="Actuador de calefacción $estado de forma manual por $usuario.";
        return $datos;
        
    }
    public function enciendeoApagaActuador($estado,$actuador){
        //ultimo usuario que ha accedido al sistema.
        $query = $this->couchdb->limit(1)->descending(true)->getview('identificacion','ultimoacceso'); //vista ultimo acceso
	$usuario = $query->rows[0]->value;//ultimo acceso
        //almacenamos el estado del riego con el usuario que lo ha establecido.
        $doc = new stdClass();
        $doc->estado = $estado;
        $doc->date = time();
        $doc->usuario = $usuario;
        $doc->actuador= $actuador;
        $this->couchdb->storeDoc($doc);
        
    }
}
 
?>